package com.wd.live.wx

import android.app.Activity
import android.content.Intent
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.Settings.Global
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import com.alibaba.android.arouter.launcher.ARouter
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.modelmsg.SendAuth
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.wd.live.R
import com.wd.live.login.viewmodel.LoginViewModel
import com.wd.live.module_base.bean.FindWxBean
import com.wd.live.module_base.bean.WxLoginBean
import com.wd.live.module_base.net.HttpUtils1
import com.wd.live.myapp.MMKVUtil
import com.wd.module_base.net.HttpUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
/*
* 微信三方登录: 通过调用微信SDK，应用程序可以实现用户使用微信账号进行登录或者授权。
* 存储: 首选项是Android中的一种轻量级数据存储方式，用于存储简单的键值对；MMKV 是
* 一个高性能、低内存占用的键值对存储库，比起传统的SharedPreferences更加高效。
* */
class WXEntryActivity : Activity(),IWXAPIEventHandler {
    lateinit var labLogin :FindWxBean
    //APP_val替换为你的应用从官方网站申请到合法aooID
    private val APP_ID:String="wx064904aa8809f5aa"
    //IWXAPI是第三方app和微信通信的openApi接口
    private lateinit var api:IWXAPI

    @RequiresApi(api = Build.VERSION_CODES.M)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_wxentry)
        api=WXAPIFactory.createWXAPI(this,APP_ID,true)
        api.handleIntent(getIntent(),this)
    }

    override fun onReq(p0: BaseReq?) {
        TODO("Not yet implemented")
    }

    override fun onResp(p0: BaseResp?) {
        //创建viewmodel实例

        //viewmodel是抽象类所以用
        if (p0?.errCode==0){
            Toast.makeText(this,"登录成功",Toast.LENGTH_SHORT).show()
            val code=(p0 as SendAuth.Resp).code
            GlobalScope.launch(Dispatchers.IO){
                val result=HttpUtils.apiService.getFindWxList(code)
                result.result.let {
                    it2->
                        if (it2 != null) {
                            labLogin=it2
                            Log.i("TAG", "onResp: "+labLogin.nickName)
                        }
                }
                if (result.status=="0000"){
                    //MMKVUtil存储
                    //MMKVUtils存储
                    MMKVUtil.setIsLogin(true)
                    MMKVUtil.setUserContent(labLogin.nickName,labLogin.headPic,labLogin.sex)
                    //登录成功返回主页
                    ARouter.getInstance().build("/app/main").navigation()
                }
            }
        }
    }
}